#include<iostream>
using namespace std;
const int MAXN = 1e6 + 10;

int n, a[MAXN];

int find(int t) {
    int l = 1, r = n;
    while(l < r) {
        int mid = (l + r) / 2;
        /*
        常规二分be like:
            if(a[mid] == t) return mid;
            else if(a[mid] > t) r = mid - 1;
            else l = mid + 1;
        但本题是找第一个大于等于t的数，所以左边可以还存在我们需要的正确答案；
        因此要把等于的情况合并到左边，即：
            if(a[mid] >= t) r = mid;
            else l = mid + 1;
        */
        if(a[mid] >= t) r = mid;
        else l = mid + 1;
    }
    if(a[l] == t) return l;
    else return -1;
}

int main() {
    int m;
    scanf("%d%d", &n, &m);
    for(int i=1; i<=n; i++) scanf("%d", &a[i]);
    while(m--) {
        int t;
        cin >> t;
        printf("%d ", find(t));
    }
    return 0;
} 